package mlz.work;

import java.util.Random;
import java.util.Scanner;

/*
## 需求6：抢红包

-个大V直播时发起了抢红包活动，分别有:9、666、188、520、99999五个红包。
请模拟粉丝来抽奖，按照先来先得随机抽取，抽完即止，注意:一个红包只能被抽一次，先抽或后抽哪一个红包是随机的，
示例如下(不一定是下面的顺序)：

请按任意键完成抽奖:aaa
恭喜您，您抽中了:188
请按任意键完成抽奖:ass
恭喜您，您抽中了:666
请按任意键完成抽奖:sasa
恭喜您，您抽中了:99999
请按任意键完成抽奖:dfssfs
恭喜您，您抽中了:9
请按任意键完成抽奖:fsfsf
恭喜您，您抽中了:520
活动结束。。。。

需求分析:
1.方法是否需要接收数据处理?
    需要,参数是一个数组类型,每个红包是数组中的元素
2.方法是否需要返回值?
    不需要返回值,抢红包的过程直接打印即可, -void
3.方法内部的业务逻辑
    1.写一个循环,循环的次数就是数组的长度
    2.每次循环,都进行键盘录入,用户进行抽奖
    3.随机从数组中产生一个下标位置,获取该下标位置上对应的元素,这个元素就是表示抽中的红包
        如果值不为0的情况: 打印中奖信息,吧当前位置上的元素设置为0
        如果值为0的情况: 说明红包已经被抽过了.则进行重新循环找其他红包对应的下标位置

 */
public class WorkDemo06 {
    public static void main(String[] args) {
            //9、666、188、520、99999
        int[] moneys = {9,666,188,520,99999};
        start(moneys);
    }

    public static void start(int[] moneys){
        //控制台对象
        Scanner sc = new Scanner(System.in);

        //1.写一个循环,循环的次数就是数组的长度
        for (int i = 0; i < moneys.length; i++) {
            while(true){
                //2.每次循环,都进行键盘录入,用户进行抽奖
                System.out.print("请按任意键完成抽奖:" );
                String mgs = sc.next();
                //3.随机从数组中产生一个下标位置,获取该下标位置上对应的元素,这个元素就是表示抽中的红包
                Random r = new Random();
                int index = r.nextInt(moneys.length);
                int money = moneys[index]; //188
                if (money != 0){
                    //如果值不为0的情况: 打印中奖信息,吧当前位置上的元素设置为0
                    System.out.println("恭喜您，您抽中了:" + money);
                    moneys[index] = 0;
                    break;
                }else {
                    //如果值为0的情况: 说明红包已经被抽过了.则进行重新循环找其他红包对应的下标位置
                    i--;
                    break;
                }
            }
        }
    }
}
